/* 
 * Клас для виконання AJAX-запросів контенту.
 * Запрошує контент за отриманним URL,
 * та відображає його в батьківському компонеті з ID=parentID
 * url - ідентифікатор ресурсу що небхідно отримати
 * params - масив параметрів для передачі серверу
 * form - HTML-форма для автоматичного формування параметрів
 * parentID - ID бітьківського компоненту для відображення отриманного контенту
 * append - признак необхідності додавання контенту до вже існуючих елементів
 */
var Requester = {
	post: function (url, params, form, parentID, append) {
		Requester.loadAnim(true);
		if (form !== null) {
			for (i = 0; i < form.length; i++) {
				var el = form.elements[i];
				params += el.name + '=' + el.value + ';';
			}
		}
		var xhr = new XMLHttpRequest();
		xhr.open("POST", url, true);
		xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xhr.send(params);
		xhr.onreadystatechange = function () {
			if (this.readyState === 4 && this.status === 200) {
				var parent = byId(parentID);
				if (!append) {
					parent.innerHTML = this.responseText;
				} else {
					parent.innerHTML += this.responseText;
				}
			} else if (this.readyState === 4) {
				Message.show("Виникла помилка:(", this.responseText);
			}
			Requester.loadAnim(false);
		};
	},
	loadAnim: function (visible) {
		var load = byId("loading");
		var anim = byId("loading-indicator");
		load.style.visibility = "visible";
		load.style.opacity = "1";
		if (visible) {
			var i = 0;
			(function () {
				if (i < 4) {
					i = i + 1;
					anim.innerHTML += ".";
					setTimeout(arguments.callee, 500);
				} else {
					i = 0;
					anim.innerHTML = ".";
					setTimeout(arguments.callee, 500);
				}
			})();
		} else {
			load.style.visibility = "hidden";
			load.style.opacity = "0";
		}
	}};

